#pragma once

namespace Typhoon {
	template<class T> class IDelegate
	{
	public:
		IDelegate();
		virtual ~IDelegate();

		virtual void Invoke(T value) = 0;
		virtual bool Match(IDelegate<T>* other) = 0;
	};
}

template<class T> Typhoon::IDelegate<T>::IDelegate() {}

template<class T> Typhoon::IDelegate<T>::~IDelegate() {}